<?php
namespace app\store\model;
use app\common\model\WxappName as WxappNameModel;
use think\Cache;

/**
 * 微信小程序名称模型
 */
class WxappName extends WxappNameModel
{
    /**
     * 添加
     */
    public function add($data)
    {
		if (!isset($data['license']) || empty($data['license'])) {
            $this->error = '请选择营业执照1';
            return false;
        }
		$result = $this->setnickname($data);
		if($result['errcode']!=0){
			$this->error = $result['errmsg'];
            return false;
		}
		$data['status'] = 1;//审核成功
		if(isset($result['audit_id']) AND !empty($result['audit_id'])){
			$data['status'] = 0;//需要审核
			$this->error = '设置成功，但需要审核';
			$data['audit_id'] = $result['audit_id'];
		}
		$wxapp = Wxapp::detail();
		$wxapp->app_name = $data['nick_name'];
		$wxapp->save();
        $data['wxapp_id'] = self::$wxapp_id;
		Cache::rm('wxapp_' . self::$wxapp_id);
        return $this->allowField(true)->save($data);
    }

    /**
     * 编辑
     */
    public function edit($data)
    {
        return $this->allowField(true)->save($data);
    }
	
	/**
     * 设置昵称
     */
    private function setnickname($set)
    {
		//上传临时素材
		$license = up_temp_material($set['license']);
		$other1 = '';
		if(isset($set['naming_other_stuff_1']) AND !empty($set['naming_other_stuff_1'])){
			$other1 = up_temp_material($set['naming_other_stuff_1']);
		}
        $access_token = getAccessToken();
		$url = 'https://api.weixin.qq.com/wxa/setnickname?access_token='.$access_token;
		$data = '{"nick_name":"'.$set['nick_name'].'","license":"'.$license.'","naming_other_stuff_1":"'.$other1.'"}';
		$result = json_decode(http_request($url,$data),true);
		if($result['errcode']==0){
			return $result;
		}
		switch($result['errcode']){
			case 91001:
				$result['errmsg'] = '不是公众号快速创建的小程序';
				break;
			case 91002:
				$result['errmsg'] = '小程序发布后不可改名';
				break;
			case 91003:
				$result['errmsg'] = '改名状态不合法';
				break;
			case 91004:
				$result['errmsg'] = '昵称不合法';
				break;
			case 91005:
				$result['errmsg'] = '昵称 15 天主体保护';
				break;
			case 91006:
				$result['errmsg'] = '昵称命中微信号';
				break;
			case 91007:
				$result['errmsg'] = '昵称已被占用';
				break;
			case 91008:
				$result['errmsg'] = '昵称命中 7 天侵权保护期';
				break;
			case 91009:
				$result['errmsg'] = '需要提交材料';
				break;
			case 91010:
				$result['errmsg'] = '其他错误';
				break;
			case 91011:
				$result['errmsg'] = '查不到昵称修改审核单信息';
				break;
			case 91012:
				$result['errmsg'] = '其他错误';
				break;
			case 91013:
				$result['errmsg'] = '占用名字过多';
				break;
			case 91014:
				$result['errmsg'] = '+号规则 同一类型关联名主体不一致';
				break;
			case 91015:
				$result['errmsg'] = '原始名不同类型主体不一致';
				break;
			case 91016:
				$result['errmsg'] = '名称占用者 ≥2';
				break;
			case 91017:
				$result['errmsg'] = '+号规则 不同类型关联名主体不一致';
				break;
			default:
				$result['errmsg'] = '错误代码：'.$result['errcode'].'，'.$result['errmsg'];
		}
		return $result;
    }
	
	/**
     * 检测名称
     */
    public function check($nick_name)
    {
        $access_token = getAccessToken();
		$url = 'https://api.weixin.qq.com/cgi-bin/wxverify/checkwxverifynickname?access_token='.$access_token;
		$data = '{"nick_name":"'.$nick_name.'"}';
		$result = json_decode(http_request($url,$data),true);
		if($result['errcode']==0){
			 if($result['hit_condition']){
				$this->error ='命中关键字：'.$result['wording'];
				return false;
			 }
			$this->error = '可以注册';
            return false;
		}
		switch($result['errcode']){
			case 53010:
				$msg = '名称格式不合法';
				break;
			case 53011:
				$msg = '名称检测命中频率限制';
				break;
			case 53012:
				$msg = '禁止使用该名称';
				break;
			case 53013:
				$msg = '公众号：名称与已有公众号名称重复;小程序：该名称与已有小程序名称重复';
				break;
			case 53014:
				$msg = '公众号：公众号已有{名称 A+}时，需与该帐号相同主体才可申请{名称 A};小程序：小程序已有{名称 A+}时，需与该帐号相同主体才可申请{名称 A}';
				break;
			case 53015:
				$msg = '公众号：该名称与已有小程序名称重复，需与该小程序帐号相同主体才可申请;小程序：该名称与已有公众号名称重复，需与该公众号帐号相同主体才可申请';
				break;
			case 53016:
				$msg = '公众号：该名称与已有多个小程序名称重复，暂不支持申请;小程序：该名称与已有多个公众号名称重复，暂不支持申请';
				break;
			case 53017:
				$msg = '公众号：小程序已有{名称 A+}时，需与该帐号相同主体才可申请{名称 A};小程序：公众号已有{名称 A+}时，需与该帐号相同主体才可申请{名称 A}';
				break;
			case 53018:
				$msg = '名称命中微信号';
				break;
			case 53019:
				$msg = '名称在保护期内';
				break;
			default:
				$msg = '错误代码：'.$result['errcode'].'，'.$result['errmsg'];
		}
		$this->error = $msg;
        return false;
    }
}
